/******************************************************************************/
/*  Class UART2                                                               */
/*  PO: S. Maslyakov, rusoil.9@gmail.com                                      */
/*                                                                            */
/*  Revision:     1.1                                                         */
/*  Date:         2011/01/20 12:24:33                                         */
/******************************************************************************/


#ifndef __UART2_H
#define __UART2_H


#include "Rs422\rs422.h"
#include "uart_def.h"


#define UART2_RX_EVENT        (0x00000001)
#define UART2_TX_EVENT        (0x00000002)


//==============================================================================
//  Class UART2
//==============================================================================
class UART2 : public RS422
{
public:
  static void Init_Uart(const uint32_t _baudrate, const uint8_t _key);
  static void Reinit_Uart(const uint32_t _baudrate, const uint8_t _key);
  static void * Get_uart_event();
  static void TxData(const uint8_t * const _pData, const uint32_t _dataLen);
  static void RxByte(const uint8_t _data);
  static void RxData(const uint8_t * _pData, const uint32_t _dataLen);
  static uint32_t GetRxData(uint8_t * const _pBuff);
  static bool_t TestTxEnd() { return (U2LSR & LSR_TEMT) ? TRUE_T : FALSE_T; }
  static uint8_t TxByte();
  inline static void EnableInt() { U2IER = 7; }
  inline static void DisableInt() { U2IER = 0; }
  inline static uint32_t GetRxDataLen() { return uart.rx.dataLen; }
  inline static void ClearRxBuff() { uart.rx.dataLen = 0; }
  inline static bool_t TestTxBufferIsEmpty() {
      return (uart.tx.dataLen) ? FALSE_T : TRUE_T;
  }
  using RS422::DriverRxOn;
  using RS422::DriverShutdown;

private:
  static void Create_uart_event();
  static void StartTx();

  static __UART_TOOLS uart;
};
//==============================================================================
//==============================================================================


#endif